以目前流行的restfull API來說,django提供了一些便捷的處理方式讓我們使用。
但是在實作方面時常需要拿A又拿B,改A在刪B,使用了此種風格的API後,
在靈活性上就缺失了一些,但本篇不討論此內容,小弟實作了一些時間,也找尋了很多方法,還是認為沒有哪個風格最完美,還是依照各自需求來決定。
風格是人訂的,寫法是好壞,各位同事間協調好就好 !!
此種方法會讓接口雜亂,不易維護
# urls.py
from django.urls import path
from . import views
urlpatterns = [
path('getQuestionAPI', views.getQuestionAPI, name = 'getQuestionAPI'),
path('postQuestionAPI', views.postQuestionAPI, name = 'postQuestionAPI')
]
# views.py
def getQuestionAPI(request):
# 取得資料
pass
def postQuestionAPI(request):
# 新增資料
pass
這樣寫的好處為接口乾淨簡潔,並且根據http方法請求來判斷 增、修、改、查等等動作
# urls.py
from django.urls import path
from . import views
urlpatterns = [
path('QuestionAPI', views.QuestionAPI, name = 'QuestionAPI')
]
# views.py
def QuestionAPI(request):
httpMethod = request.method
if httpMethod == 'GET':
return HttpResponse('取得資料')
else if httpMethod == 'POST':
return HttpResponse('新增資料')
django 提供了一個更簡潔的寫法 詳細可參考官方文檔
# urls.py
from django.urls import path
from . import views
urlpatterns = [
# 這裡在 QuestionAPI後面加上.as_view()
path('QuestionAPI', views.QuestionAPI.as_view(), name = 'QuestionAPI'),
]
# views.py
class QuestionAPI(View):
def get(self, request):
return HttpResponse('請求資料')
def post(self, request):
return HttpResponse('新增資料')
官方上還有很多基於類的視圖,有興趣能夠在更深入研究,會讓實作起來更快速方便。